Modul:Rätsel Infobox
local p = {} local pgN = mw.title.getCurrentTitle().text local function getCleanName(pageName) return pageName:match("^%(+") end local infobox local categories = {} -- Categories to add local pData local rData = mw.loadData('Modul:RätselDaten') local getGame = { "1" = {anz = 135, anzW = "W27", anzWJP = "W52", titel = "Professor Layton und das geheimnisvolle Dorf", kuerzel = "Layton 1"}, "2" = {anz = 153, anzW = "W33", titel = "Professor Layton und die Schatulle der Pandora", kuerzel = "Layton 2"}, "3" = {anz = 168, anzW = "W35", titel = "Professor Layton und die verlorene Zukunft", kuerzel = "Layton 3"}, "4" = {anz = 170, anzW = "W34", titel = "Professor Layton und der Ruf des Phantoms", kuerzel = "Layton 4"}, "5" = {anz = 150, titel = "Professor Layton und die Maske der Wunder", kuerzel = "Layton 5"}, "6" = {anz = 165, titel = "Professor Layton und das Vermächtnis von Aslant", kuerzel = "Layton 6"}, "VS" = {anz = 82, titel = "Professor Layton vs. Phoenix Wright: Ace Attorney", kuerzel = "Layton vs. Wright"}, "MJ" = {anz = 170, titel = "Layton’s Mystery Journey: Katrielle und die Verschwörung der Millionäre", kuerzel = "Layton’s Mystery Journey"} } local function SpielID() return rDatapgN.spiel end local function NummerID() return rDatapgN.nr end local function getPuzzle() local nummer = NummerID() local spiel = SpielID() if nummer "???" then -- Hidden Door local hd = {"2" = 154, "3" = 169} nummer = hdspiel end pData = mw.loadData("Modul:RätselDaten/" .. spiel) return pDatatonumber(nummer) end local function isEmpty(arg) return not arg or arg '' end local function addCategory(category) categories#categories+1 = "Kategorie:" .. category .. "" end local function createInfobox(Spiel) infobox = mw.html.create("table"):addClass("infobox") end local function addTitleRow(Name) Name = getCleanName(pgN) infobox :tag("tr") :tag("th") :attr("colspan", 2) :addClass("infoboxheader") :wikitext(Name) end local function addImageRow(Bild) infobox :tag("tr") :tag("th") :attr("colspan", 2) :addClass("infoboxbild") :wikitext("link=") end local function addNoImageRow(text) infobox :tag("tr") :tag("th") :attr("colspan", 2) :addClass("infoboxbild") :wikitext(text) end local function addHeaderRow(text) infobox :tag("tr") :tag("th") :attr("colspan", 2) :wikitext(text) end local function addRow(label, content, altText) if isEmpty(content) then if altText then content = altText else return end end local row = infobox:tag("tr") row:tag("td") :addClass("farbe1") :wikitext(label) row:tag("td") :addClass("farbe2") :wikitext(content) return row end -- Funktionen für Vorlagen function p.AnzW() return getGameSpielID().anzW end function p.AnzWJP() return getGameSpielID().anzWJP end function p.Name() return getCleanName(pgN) end function p.SpielID() return rDatapgN.spiel end function p.NrJP() return rDatapgN.nrJP end function p.NummerID() return rDatapgN.nr end function p.Datum() return { "JP" = rDatapgN.datumJP, "US" = rDatapgN.datumUS, "default" = rDatapgN.datum } end function p.Spiel() return getGameSpielID().titel end function p.main(frame) local a = frame:getParent().args -- Vorlagen Parameter (wie } etc.) local puzzle = getPuzzle() -- Daten aus den RätselDaten Modulen local spiel = getGameSpielID() local puzzleNav = mw.html.create('table'):addClass('navbox puzzleNav') local navRow = puzzleNav:tag('tr') local aNum = tonumber(NummerID()) local pPrev, pNext if aNum then pPrev = pDataaNum-1 pNext = pDataaNum+1 if not pPrev or tonumber(pPrev.nr) ~= aNum-1 then pPrev = nil end if not pNext or tonumber(pNext.nr) ~= aNum+1 then pNext = nil end end -- Linke Spalte if pPrev then navRow :tag('td') :css('width','33.3%') :css('text-align', 'center') :wikitext("← " .. (getCleanName(pPrev.name) or '?') .. "") else navRow :tag('td') :css('width','33.3%') :css('text-align', 'center') end -- Mittlere Spalte navRow :tag('td') :css('text-align', 'center') :wikitext(getCleanName(pgN)) -- Rechte Spalte if pNext then navRow :tag('td') :css('width','33.3%') :css('text-align', 'center') :wikitext("" .. (getCleanName(pNext.name) or '?') .. " →") else navRow :tag('td') :css('width','33.3%') :css('text-align', 'center') end -- ## INFOBOX ## createInfobox(SpielID()) -- ## TITEL ## addTitleRow(a.Name) -- ## BILD ## if not isEmpty(a.KeinBild) then addNoImageRow("Dieses Rätsel hat kein Titelbild") else local Bild = a.Bild or ("PL" .. SpielID() .. "-" .. NummerID() .. ".png") addImageRow(Bild) end -- ## SPRACHEN ## addHeaderRow("In anderen Sprachen") -- JP if not isEmpty(a.Romaji) then a.Jp = "" .. a.Jp .. "" end addRow("link=", a.Jp) -- EN (US/UK) if not isEmpty(a.En) then addRow("link=", a.En) else -- US & UK addRow("link=", a.Us) addRow("link=", a.Uk) end -- FR addRow("link=", a.Fr, "Unbekannt") if isEmpty(a.Fr) then addCategory("Französischer Titel fehlt") end -- IT addRow("link=", a.It, "Unbekannt") if isEmpty(a.It) then addCategory("Italienischer Titel fehlt") end -- KR a.Romaja = a"Kr-Umschrift" local romaja = a.Romaja if not isEmpty(romaja) then a.Kr = "" .. a.Kr .. "" end addRow("link=", a.Kr) -- NL if isEmpty(a.Nl) and SpielID() ~= "1" then addRow("link=", a.Nl, "Unbekannt") addCategory ("Niederländischer Titel fehlt") else addRow("link=", a.Nl) end -- SP addRow("link=", a.Sp, "Unbekannt") if isEmpty(a.Sp) then addCategory("Spanischer Titel fehlt") end -- ## INFORMATIONEN ## addHeaderRow("Informationen") -- Nummer addRow("#", puzzle.nr .. "/" .. spiel.anz) -- Spiel addRow("Spiel", "" .. (spiel.titel or "") .. "") -- Pikarat if puzzle.pikaratJP then addRow("Pikarat", "" .. puzzle.pikarat .. "") addCategory((puzzle.pikarat or 0) .. " Pikarat") else addRow("Pikarat", puzzle.pikarat) addCategory((puzzle.pikarat or 0) .. " Pikarat") end -- Rätsel-Typ if puzzle.typ then if puzzle.typ2 then addRow("Typ", "' .. puzzle.typ .. "/' .. puzzle.typ2 .. "") addCategory("Typ:" .. puzzle.typ) addCategory("Typ:" .. puzzle.typ2) else addRow("Typ", "' .. puzzle.typ .. "") addCategory("Typ:" .. puzzle.typ) end end -- Ort if puzzle.ort then addRow("Ort", "" .. puzzle.ort .. "") addCategory("Ort:" .. puzzle.ort) end -- Kapitel if puzzle.kapitel then addRow("Kapitel", puzzle.kapitel) end -- Gestellt von... if puzzle.person then addRow("Gestellt von", "" .. puzzle.person .. "") addCategory("Gestellte Rätsel von " .. puzzle.person) end -- Gelöst von... if puzzle.loeser then addRow("Gelöst von", "" .. puzzle.loeser .. "") addCategory("Gelöste Rätsel von " .. puzzle.loeser) end -- Wichtig für die Handlung if puzzle.handlung then addRow("Handlung", "Wichtiges Rätsel für das Voranschreiten des Spiels") addCategory("Wichtige Rätsel für das Voranschreiten von " .. spiel.kuerzel) end -- Belohnung if puzzle.belohnung then addRow("Belohnung", puzzle.belohnung):addClass("letztezeile") else if isEmpty(a.Belohnung) then addRow("Belohnung", "Für dieses Rätsel gibt es keine Belohnung"):addClass("letztezeile") else addRow("Belohnung", a.Belohnung):addClass("letztezeile") end end return tostring(puzzleNav) .. tostring(infobox) .. table.concat(categories) end return p --